package Z.dailyExercise.holiday;

import java.util.Deque;
import java.util.LinkedList;
import java.util.Stack;

public class _剑指Offer30包含min函数的栈 {
    Deque<Integer> stack;
    Deque<Integer> minStack;
    /** initialize your data structure here. */
    public _剑指Offer30包含min函数的栈() {
        stack = new LinkedList<Integer>();
        minStack = new LinkedList<>();
        minStack.add(Integer.MAX_VALUE);
    }

    public void push(int x) {
        stack.push(x);
        //只存最小数值的话 如果有一样的数 在弹出的时候就会出现问题
        //所以保证最小栈和数据栈一样大小 如果x不是最小的 就重复push进最小数
        minStack.push(Math.min(minStack.peek(),x));

    }

    public void pop() {
        stack.pop();
        minStack.pop();

    }

    public int top() {

        return stack.peek();
    }

    public int min() {


        return minStack.peek();

    }
}
